from django import template
register = template.Library()
#  格式化html 字符串
from django.utils.html import format_html
from ..models import Types
# 自定义分页标签
@register.simple_tag
#  count 总页数   request 请求对象  可根据GET 获得当前页数   页面传来的
def showpage(count,request):

    # 获取页码的搜索条件           &types=email&keywords=ee
    data = request.GET.dict()
    # print(data)              # {'types': 'email', 'keywords': 'ee'}
    u = ''
    # 循环拼接搜索条件
    for k,v in data.items():
        # 将 page（页码） 去除
        if k != 'page':
            u += '&{k}={v}'.format(k=k,v=v)

        # print(u)

    # 获取当前页码数   page 当前页码数   视图函数中定义  前台传来
    p = int(request.GET.get('page',1))
    # 开始页
    begin = p - 4
    # 结束页
    end = p + 5
    # 判断如果当前页 小于5
    if p < 5:
        # 则开始页为1
        begin = 1
        # 结束页为10
        end = 10
    # 判断如果当前页 大于 总页数-5
    if count < 10:
        begin = 1
        end = count
    # 当前页如果大于总页数-5
    if p > count - 5:
        # 则开始页为总页数-9
        begin = count - 9
        # 结束页为总页数
        end = count

    # 判断如果开始页 小于等于 0,则开始页为1
    if begin <= 0:
        begin = 1

    s = ''
    s += '<li><a href="?page=1'+u+'">首页</a></li>'
    #  上一页  当前页减 1
    #  判断当前页是否位第 1 页
    if p == 1:
        # 如果是第一页就不可点  值为1
        s += '<li class="am-disabled"><a href="?page=1'+u+'">«</a></li>'
    else:
        #  如果不是就减1
        s += '<li><a href="?page='+str(p-1)+u+'">«</a></li>'

    for x in range(begin,end+1):
        # 判断是否为 当前页
        if p == x:
            #  给其添加 高亮背景   给get 穿 page  当前页码
            s += '<li class="am-active"><a href="?page='+str(x)+u+'">'+str(x)+'</a></li>'
        else:
            #  不添加高亮背景
            s += '<li><a href="?page='+str(x)+u+'">'+str(x)+'</a></li>'
    # 下一页  当前页加1
    #  判断当前页是否为最后一页
    if p == count:
        #  是就为最后一页 不可点
        s += '<li class="am-disabled"><a href="?page='+str(count)+u+'">»</a></li>'
    else:
        # 不是就加1
        s += '<li><a href="?page='+str(p+1)+u+'">»</a></li>'
    s += '<li><a href="?page='+str(count)+u+'">尾页</a></li>'
    return format_html(s)

# 自定义 base 二级分类继承  标签
@register.simple_tag
def showtypes():
    # 查询所有的 二级分类
    erlist = Types.objects.exclude(pid=0)
    s = ''
    # 循环插入数据
    for i in erlist:
        s += '<li class="layout-header-nav-item"><a href="./list.html" class="layout-header-nav-link">'+i.name +'</a></li>'
    return format_html(s)

# 自定义 购物车乘法标签
@register.simple_tag
def ShowTotal(num,price):
    res = int(num) * price
    res = "{:.2f}".format(res)
    return res